const axios = require('axios')

// 服务器地址
// const serviceApi = 'http://127.0.0.1:8091/ys'
const serviceApi = 'http://apiys.021yssy.com/ys'
// 查询banner列表
var queryYsbannerList = '/api/v1/api/banner/queryYsbannerList'
// 查询导航菜单
var queryNavigationList = '/api/v1/api/navigation/queryNavigationList'
// 查询公司基本信息
var queryCompanyList = '/api/v1/api/company/queryCompanyList'
// 查询友情链接列表
var queryLinkList = '/api/v1/api/link/queryLinkList'
// 查询新闻分类列表
var queryNewsTypeList = '/api/v1/api/newsType/queryNewsTypeList'
// 查询新闻列表
var queryNewsList = '/api/v1/api/news/queryNewsList'
// 根据ID查询新闻
var queryNewsById = '/api/v1/api/news/queryNewsById'
// 查询问题列表
var queryQaList = '/api/v1/api/qa/queryQaList'
// 根据问题ID查询
var queryQaById = '/api/v1/api/qa/queryQaById'
// 根据问题ID查询回答列表
var queryQaAnswerList = '/api/v1/api/qaAnswer/queryQaAnswerList'
// 根据类型查询问题
var queryQaByType = '/api/v1/api/qa/queryQaByType'

/**
 * 公共请求数据接口
 * @param {boolean} client 是否使用客户端路径请求 默认为服务端请求
 * @param {string} url 请求路径
 * @param {string} method 请求方式 默认POST
 * @param {object} headers 设置请求头
 * @param {function} receive 返回接收信息
 * @param {function} reject 返回拒绝信息
 */
function http(parame) {
  return new Promise((receive, reject) => {
    // 带入默认header
    if (parame.headers) {
      let contentType = parame.headers['content-type'];
      parame.headers['content-type'] = contentType ? contentType : 'application/x-www-form-urlencoded';
    }
    axios({
      ...parame,
      url: serviceApi + parame.url,
      method: parame.method || 'POST',
      headers: parame.headers || {
        'content-type': 'application/x-www-form-urlencoded'
      }
    }).then(res => {
      receive(res.data)
    }).catch(err => {
      reject(err)
    })
  })
}
// 获取基本信息
function getInfoFn() {
  return http({
    url: queryCompanyList
  })
}
// 获取导航
function getNavFn() {
  return http({
    url: queryNavigationList,
    params: {
      type: 1
    }
  })
}
// 获取友情链接
function getLinkFn() {
  return http({
    url: queryLinkList
  })
}
// 获取新闻资讯分类
function getNewsTypeFn() {
  return http({
    url: queryNewsTypeList
  })
}
// 获取常见问题
function getProblemFn(typeAlias) {
  return http({
    url: queryQaByType,
    params: {
      typeAlias
    }
  })
}
// 时间戳转时间
function formatDate(date, fmt) {
  date = new Date(parseFloat(date))
  let o = {
    'm+': date.getMonth() + 1,                    //月份
    'd+': date.getDate(),                         //日
    'H+': date.getHours(),                        //小时
    'i+': date.getMinutes(),                      //分
    's+': date.getSeconds(),                      //秒
    "q+": Math.floor((date.getMonth() + 3) / 3),  //季度
    "S": date.getMilliseconds()                   //毫秒
  };
  if (/(Y+)/.test(fmt)) {   //年份
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  for (let k in o) {
    if (new RegExp("(" + k + ")").test(fmt)) {
      let str = o[k] + '';
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
  }
  return fmt;
}
function padLeftZero(str) {
  return ('00' + str).substr(str.length);
}

module.exports = {
  queryYsbannerList,
  queryNavigationList,
  queryCompanyList,
  queryLinkList,
  queryNewsTypeList,
  queryNewsList,
  queryNewsById,
  queryQaList,
  queryQaById,
  queryQaAnswerList,
  http,
  getInfoFn,
  getNavFn,
  getLinkFn,
  getNewsTypeFn,
  getProblemFn,
  formatDate
}  